package com.example.demo.level3.homework;

import com.example.demo.level3.LearnStream;
import com.example.demo.level3.pojo.People;
import org.junit.jupiter.api.Test;

import java.math.BigDecimal;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * 流式操作解答
 * @author 心随
 */
public class AnswerByZhangzhuohui {
    /*
     * 思考题：
     * 请将list根据分数是否及格进行分组，并将分数从高到低排序，每个组保留前三名，获取他们的姓名+成绩的拼接，拼接符号为->
     * 注：不及格的人指score小于60，及格为true，不及格为false
     * 注2：打印的对象类型为 Map<Boolean, String>
     */

    /**
     * 请在 com.example.demo.level3.homework 下新建文件
     * 拷贝以下代码，进行答题
     */
    @Test
    public void question() {
        List<People> list = LearnStream.getList();
        // TODO 请对list进行操作，获取answer
        Map<Boolean, String> answer = list.stream()
                                          .sorted(Comparator.comparing(People::getScore).reversed())
                                          .collect(Collectors.groupingBy(n->compare(n.getScore()),Collectors.collectingAndThen(Collectors.toList(),
                                                  xx->xx.stream().limit(3).map(n->n.getName()+n.getScore().toString()).collect(Collectors.joining("-")))));
        System.out.println(answer);
    }

    public Boolean compare(BigDecimal decimal){
        return decimal.intValue()>=60;
    }
}
